 |

|
徹底比較!!Ruby on Rails vs Javaフレームワーク |
第6回:RailsとGrailsの比較(前編)
著者:アスタリクス 大西 正太 2006/10/18
|
|
|
1 2 3 次のページ
|
 |
はじめに
|
前回までで、一通りJavaフレームワークとRailsの比較をしてきました。本連載の最後の比較は、少し趣向を変えてGroovy上に作成されたRailsライクなフレームワークGrailsとRailsの比較をしていきます。
|
Grailsとは |
GrailsはGroovy(Java公式仕様として策定が進められている、JavaVM上で動作するスクリプト言語)上で動作するRailsライクなフレームワークです。当初、Groovy on Railsという名称で作成が進められていたことからもわかるように、Railsに強く影響を受けていることが公言されています(後にRails作者の要請により改名)。
Groovyは豊富なJavaライブラリの利用が可能な上、言語設計自体もRubyの影響を受けているためRailsライクなフレームワークと相性がよいと考えられます。
Grailsに関する情報源には次のサイトがあります。
なお、今回はGrails 0.2系を取り扱います。
|
アーキテクチャの比較 |
図1がRailsとGrailsのアーキテクチャを比較したものです。参考として一般的なJavaEE開発のアーキテクチャも掲載してあります。

図1:Rails、Grails、JavaEEのアーキテクチャ (画像をクリックすると別ウィンドウに拡大図を表示します)
RailsとGrailsの最大の相違は、Railsはコントローラから直接モデルを扱っているのに対し、Grailsではサービスクラスをはさんでいる点です。
構成が多少冗長になりますが、Webリクエストなどに影響されないサービスクラスによってテスタビリティが高まる効果があります。逆に、GrailsとJavaEEを比べるとDAOなどのクラスは省略され、Railsと同様にドメインモデル自体がDBへのアクセスメソッドを持つ構成(ActiveRecordパターン)となっています。
結論としては、RailsとJavaEEの中間的な位置づけのアーキテクチャであるといえるでしょうか。
|
ジェネレータの比較 |
続いて、ソースコードの雛形を自動生成する「ジェネレータ」について比較します。
Grailsでは表1に示したジェネレータコマンドが付属しています。
ジェネレート 対象 |
Railsコマンド |
Grailsコマンド |
プロジェクト |
rails プロジェクト名 |
grails create-app プロジェクト名 |
コントローラ |
generate controller コントローラ名 |
grails create-controller コントローラ名 |
モデル |
generate model モデル名 |
grails create-domain-class モデル名 |
MVC全体 |
generate scaffold モデル名 |
grails generate-all モデル名 |
表1:RailsとGrailsのジェネレータコマンド
表1をみてもわかるように、Railsとほぼ同様のジェネレータが準備されているといえます。
なお、GrailsではHSQLDBというサーバ立ち上げ不要なJava製の簡易RDBが同梱されており、プロジェクトをジェネレートするとデフォルトで利用設定が完了しています。そのため、データベースサーバの設定さえすることなくアプリケーションを作り始めることが可能です(ただし、実運用に耐えられる製品ではないため、開発が進んだ時点でRDBの切り替え作業が発生します)。
参考として、ジェネレートされたプロジェクトのディレクトリ構成を図2に示します。

図2:Grailsプロジェクトのディレクトリ構成
|
1 2 3 次のページ
|

|
|

|
著者プロフィール
株式会社アスタリクス 大西 正太
JavaEEフレームワークの設計構築や開発プロセス策定などの業務を経て、現在は新規ビジネス創生に携わる。Ruby on Rails上に構築したオープンソースのCMS「Rubricks」(http://rubricks.org/)のコミッタ。
|
|
|
|